home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QD3DCamera.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  9.8 KB  |  229 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DCamera.p
  3.  
  4.      Contains:    Generic camera routines                                             
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QD3DCamera;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QD3DCAMERA__}
  27. {$SETC __QD3DCAMERA__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QD3DCameraIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __QD3D__}
  34. {$I QD3D.p}
  35. {$ENDC}
  36.  
  37.  
  38. {$PUSH}
  39. {$ALIGN POWER}
  40. {$LibExport+}
  41.  
  42. {*****************************************************************************
  43.  **                                                                             **
  44.  **                            Data Structure Definitions                         **
  45.  **                                                                             **
  46.  ****************************************************************************}
  47. {
  48.  *  The placement of the camera.
  49.  }
  50.  
  51. TYPE
  52.     TQ3CameraPlacementPtr = ^TQ3CameraPlacement;
  53.     TQ3CameraPlacement = RECORD
  54.         cameraLocation:            TQ3Point3D;                                {   Location point of the camera      }
  55.         pointOfInterest:        TQ3Point3D;                                {   Point of interest                  }
  56.         upVector:                TQ3Vector3D;                            {   "up" vector                      }
  57.     END;
  58.  
  59. {
  60.  *  The range of the camera.
  61.  }
  62.     TQ3CameraRangePtr = ^TQ3CameraRange;
  63.     TQ3CameraRange = RECORD
  64.         hither:                    Single;                                    {   Hither plane, measured from "from" towards "to"     }
  65.         yon:                    Single;                                    {   Yon  plane, measured from "from" towards "to"      }
  66.     END;
  67.  
  68. {
  69.  *  Viewport specification.  Origin is (-1, 1), and corresponds to the 
  70.  *  upper left-hand corner; width and height maximum is (2.0, 2.0),
  71.  *  corresponding to the lower left-hand corner of the window.  The
  72.  *  TQ3Viewport specifies a part of the viewPlane that gets displayed 
  73.  *    on the window that is to be drawn.
  74.  *  Normally, it is set with an origin of (-1.0, 1.0), and a width and
  75.  *  height of both 2.0, specifying that the entire window is to be
  76.  *  drawn.  If, for example, an exposure event of the window exposed
  77.  *  the right half of the window, you would set the origin to (0, 1),
  78.  *  and the width and height to (1.0) and (2.0), respectively.
  79.  *
  80.  }
  81.     TQ3CameraViewPortPtr = ^TQ3CameraViewPort;
  82.     TQ3CameraViewPort = RECORD
  83.         origin:                    TQ3Point2D;
  84.         width:                    Single;
  85.         height:                    Single;
  86.     END;
  87.  
  88.     TQ3CameraDataPtr = ^TQ3CameraData;
  89.     TQ3CameraData = RECORD
  90.         placement:                TQ3CameraPlacement;
  91.         range:                    TQ3CameraRange;
  92.         viewPort:                TQ3CameraViewPort;
  93.     END;
  94.  
  95. {
  96.  *  An orthographic camera.
  97.  *
  98.  *  The lens characteristics are set with the dimensions of a
  99.  *  rectangular viewPort in the frame of the camera.
  100.  }
  101.     TQ3OrthographicCameraDataPtr = ^TQ3OrthographicCameraData;
  102.     TQ3OrthographicCameraData = RECORD
  103.         cameraData:                TQ3CameraData;
  104.         left:                    Single;
  105.         top:                    Single;
  106.         right:                    Single;
  107.         bottom:                    Single;
  108.     END;
  109.  
  110. {
  111.  *  A perspective camera specified in terms of an arbitrary view plane.
  112.  *
  113.  *  This is most useful when setting the camera to look at a particular
  114.  *  object.  The viewPlane is set to distance from the camera to the object.
  115.  *  The halfWidth is set to half the width of the cross section of the object,
  116.  *  and the halfHeight equal to the halfWidth divided by the aspect ratio
  117.  *  of the viewPort.
  118.  * 
  119.  *  This is the only perspective camera with specifications for off-axis
  120.  *  viewing, which is desirable for scrolling.
  121.  }
  122.     TQ3ViewPlaneCameraDataPtr = ^TQ3ViewPlaneCameraData;
  123.     TQ3ViewPlaneCameraData = RECORD
  124.         cameraData:                TQ3CameraData;
  125.         viewPlane:                Single;
  126.         halfWidthAtViewPlane:    Single;
  127.         halfHeightAtViewPlane:    Single;
  128.         centerXOnViewPlane:        Single;
  129.         centerYOnViewPlane:        Single;
  130.     END;
  131.  
  132. {
  133.  *    A view angle aspect camera is a perspective camera specified in 
  134.  *    terms of the minimum view angle and the aspect ratio of X to Y.
  135.  *
  136.  }
  137.     TQ3ViewAngleAspectCameraDataPtr = ^TQ3ViewAngleAspectCameraData;
  138.     TQ3ViewAngleAspectCameraData = RECORD
  139.         cameraData:                TQ3CameraData;
  140.         fov:                    Single;
  141.         aspectRatioXToY:        Single;
  142.     END;
  143.  
  144. {*****************************************************************************
  145.  **                                                                             **
  146.  **                            Generic Camera routines                             **
  147.  **                                                                             **
  148.  ****************************************************************************}
  149.  
  150. FUNCTION Q3Camera_GetType(camera: TQ3CameraObject): TQ3ObjectType; C;
  151. FUNCTION Q3Camera_SetData(camera: TQ3CameraObject; {CONST}VAR cameraData: TQ3CameraData): TQ3Status; C;
  152. FUNCTION Q3Camera_GetData(camera: TQ3CameraObject; VAR cameraData: TQ3CameraData): TQ3Status; C;
  153. FUNCTION Q3Camera_SetPlacement(camera: TQ3CameraObject; {CONST}VAR placement: TQ3CameraPlacement): TQ3Status; C;
  154. FUNCTION Q3Camera_GetPlacement(camera: TQ3CameraObject; VAR placement: TQ3CameraPlacement): TQ3Status; C;
  155. FUNCTION Q3Camera_SetRange(camera: TQ3CameraObject; {CONST}VAR range: TQ3CameraRange): TQ3Status; C;
  156. FUNCTION Q3Camera_GetRange(camera: TQ3CameraObject; VAR range: TQ3CameraRange): TQ3Status; C;
  157. FUNCTION Q3Camera_SetViewPort(camera: TQ3CameraObject; {CONST}VAR viewPort: TQ3CameraViewPort): TQ3Status; C;
  158. FUNCTION Q3Camera_GetViewPort(camera: TQ3CameraObject; VAR viewPort: TQ3CameraViewPort): TQ3Status; C;
  159. FUNCTION Q3Camera_GetWorldToView(camera: TQ3CameraObject; VAR worldToView: TQ3Matrix4x4): TQ3Status; C;
  160. FUNCTION Q3Camera_GetWorldToFrustum(camera: TQ3CameraObject; VAR worldToFrustum: TQ3Matrix4x4): TQ3Status; C;
  161. FUNCTION Q3Camera_GetViewToFrustum(camera: TQ3CameraObject; VAR viewToFrustum: TQ3Matrix4x4): TQ3Status; C;
  162.  
  163. {*****************************************************************************
  164.  **                                                                             **
  165.  **                            Specific Camera Routines                          **
  166.  **                                                                             **
  167.  ****************************************************************************}
  168. {*****************************************************************************
  169.  **                                                                             **
  170.  **                            Orthographic Camera                                  **
  171.  **                                                                             **
  172.  ****************************************************************************}
  173. FUNCTION Q3OrthographicCamera_New({CONST}VAR orthographicData: TQ3OrthographicCameraData): TQ3CameraObject; C;
  174. FUNCTION Q3OrthographicCamera_GetData(camera: TQ3CameraObject; VAR cameraData: TQ3OrthographicCameraData): TQ3Status; C;
  175. FUNCTION Q3OrthographicCamera_SetData(camera: TQ3CameraObject; {CONST}VAR cameraData: TQ3OrthographicCameraData): TQ3Status; C;
  176. FUNCTION Q3OrthographicCamera_SetLeft(camera: TQ3CameraObject; left: Single): TQ3Status; C;
  177. FUNCTION Q3OrthographicCamera_GetLeft(camera: TQ3CameraObject; VAR left: Single): TQ3Status; C;
  178. FUNCTION Q3OrthographicCamera_SetTop(camera: TQ3CameraObject; top: Single): TQ3Status; C;
  179. FUNCTION Q3OrthographicCamera_GetTop(camera: TQ3CameraObject; VAR top: Single): TQ3Status; C;
  180. FUNCTION Q3OrthographicCamera_SetRight(camera: TQ3CameraObject; right: Single): TQ3Status; C;
  181. FUNCTION Q3OrthographicCamera_GetRight(camera: TQ3CameraObject; VAR right: Single): TQ3Status; C;
  182. FUNCTION Q3OrthographicCamera_SetBottom(camera: TQ3CameraObject; bottom: Single): TQ3Status; C;
  183. FUNCTION Q3OrthographicCamera_GetBottom(camera: TQ3CameraObject; VAR bottom: Single): TQ3Status; C;
  184.  
  185. {*****************************************************************************
  186.  **                                                                             **
  187.  **                            ViewPlane Camera                                  **
  188.  **                                                                             **
  189.  ****************************************************************************}
  190. FUNCTION Q3ViewPlaneCamera_New({CONST}VAR cameraData: TQ3ViewPlaneCameraData): TQ3CameraObject; C;
  191. FUNCTION Q3ViewPlaneCamera_GetData(camera: TQ3CameraObject; VAR cameraData: TQ3ViewPlaneCameraData): TQ3Status; C;
  192. FUNCTION Q3ViewPlaneCamera_SetData(camera: TQ3CameraObject; {CONST}VAR cameraData: TQ3ViewPlaneCameraData): TQ3Status; C;
  193. FUNCTION Q3ViewPlaneCamera_SetViewPlane(camera: TQ3CameraObject; viewPlane: Single): TQ3Status; C;
  194. FUNCTION Q3ViewPlaneCamera_GetViewPlane(camera: TQ3CameraObject; VAR viewPlane: Single): TQ3Status; C;
  195. FUNCTION Q3ViewPlaneCamera_SetHalfWidth(camera: TQ3CameraObject; halfWidthAtViewPlane: Single): TQ3Status; C;
  196. FUNCTION Q3ViewPlaneCamera_GetHalfWidth(camera: TQ3CameraObject; VAR halfWidthAtViewPlane: Single): TQ3Status; C;
  197. FUNCTION Q3ViewPlaneCamera_SetHalfHeight(camera: TQ3CameraObject; halfHeightAtViewPlane: Single): TQ3Status; C;
  198. FUNCTION Q3ViewPlaneCamera_GetHalfHeight(camera: TQ3CameraObject; VAR halfHeightAtViewPlane: Single): TQ3Status; C;
  199. FUNCTION Q3ViewPlaneCamera_SetCenterX(camera: TQ3CameraObject; centerXOnViewPlane: Single): TQ3Status; C;
  200. FUNCTION Q3ViewPlaneCamera_GetCenterX(camera: TQ3CameraObject; VAR centerXOnViewPlane: Single): TQ3Status; C;
  201. FUNCTION Q3ViewPlaneCamera_SetCenterY(camera: TQ3CameraObject; centerYOnViewPlane: Single): TQ3Status; C;
  202. FUNCTION Q3ViewPlaneCamera_GetCenterY(camera: TQ3CameraObject; VAR centerYOnViewPlane: Single): TQ3Status; C;
  203.  
  204. {*****************************************************************************
  205.  **                                                                             **
  206.  **                            View Angle Aspect Camera                          **
  207.  **                                                                             **
  208.  ****************************************************************************}
  209. FUNCTION Q3ViewAngleAspectCamera_New({CONST}VAR cameraData: TQ3ViewAngleAspectCameraData): TQ3CameraObject; C;
  210. FUNCTION Q3ViewAngleAspectCamera_SetData(camera: TQ3CameraObject; {CONST}VAR cameraData: TQ3ViewAngleAspectCameraData): TQ3Status; C;
  211. FUNCTION Q3ViewAngleAspectCamera_GetData(camera: TQ3CameraObject; VAR cameraData: TQ3ViewAngleAspectCameraData): TQ3Status; C;
  212. FUNCTION Q3ViewAngleAspectCamera_SetFOV(camera: TQ3CameraObject; fov: Single): TQ3Status; C;
  213. FUNCTION Q3ViewAngleAspectCamera_GetFOV(camera: TQ3CameraObject; VAR fov: Single): TQ3Status; C;
  214. FUNCTION Q3ViewAngleAspectCamera_SetAspectRatio(camera: TQ3CameraObject; aspectRatioXToY: Single): TQ3Status; C;
  215. FUNCTION Q3ViewAngleAspectCamera_GetAspectRatio(camera: TQ3CameraObject; VAR aspectRatioXToY: Single): TQ3Status; C;
  216.  
  217.  
  218.  
  219. {$ALIGN RESET}
  220. {$POP}
  221.  
  222. {$SETC UsingIncludes := QD3DCameraIncludes}
  223.  
  224. {$ENDC} {__QD3DCAMERA__}
  225.  
  226. {$IFC NOT UsingIncludes}
  227.  END.
  228. {$ENDC}
  229.